﻿//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Text;
//using System.Threading.Tasks;

//namespace InnovTech.Data.Behavior
//{

//    public class StringValidatorParameter : BehaviorParameter
//    {
//        protected string _target;

//        public static string TargetName = "target";

//        public StringValidatorParameter(string target)
//            : base()
//        {
//            this[TargetName] = target;
//        }

//        public string Target 
//        { 
//            get { return this[TargetName] as string; }
//            set { this[TargetName] = value; }
//        }
//    }

//    public class StringLengthValidatorParameter : StringValidatorParameter
//    {
//        public static string LengthLabel = "length";
//        public static string MaxLabel = "max";
//        public static string MinLabel = "min";

//        public int Length
//        {
//            get { return (int)this[LengthLabel]; }
//            set { this[LengthLabel] = value; }
//        }

//        public int Max
//        {
//            get { return (int)this[MaxLabel]; }
//            set { this[MaxLabel] = value; }
//        }

//        public int Min
//        {
//            get { return (int)this[MinLabel]; }
//            set { this[MinLabel] = value; }
//        }

//    }

//    public class StringLengthValidator : ValidatorBase<string, StringLengthValidatorParameter, IValidationResult>
//    {
//        protected override IValidationResult ValidateCore(StringLengthValidatorParameter parameter)
//        {
//            int length = parameter.Target.Length;
//            if (parameter.Contains(StringLengthValidatorParameter.MaxLabel))
//            {
//                if (length > parameter.Max)
//                    throw new ArgumentException("The length of the target string is bigger than the constraints");
//            }
//            //if(
//        }
//    }
//}
